package lv.clientedisqueria.model.usuario;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import lv.clientedisqueria.model.DisqueriaTablaModelo;
import lv.mensajeriadisqueria.idomain.IUsuario;

/**
 * Modelo de tabla, controla todos los movimientos que se hacen en una tabla
 */
@SuppressWarnings("serial")
public class UsuarioTablaModel extends DisqueriaTablaModelo<IUsuario> {

	private static String[] columns = new String[]{"Nombre", "Descripcion", "Rol"};
	
	public UsuarioTablaModel(final UsuarioModel usuarioModel) {
		super(usuarioModel, columns);
	}

	@Override
	protected void ordenar(List<IUsuario> lista) {
		Collections.sort(getDomains(), new Comparator<IUsuario>() {
			@Override
			public int compare(IUsuario usuario1, IUsuario usuario2) {
				return usuario1.getNombre().compareToIgnoreCase(usuario2.getNombre());
			}
		});
	}

	@Override
	protected Object valor(int rowIndex, int columnIndex) {
		if(columnIndex == 0) {
			return getDomains().get(rowIndex).getNombre();
		} else if(columnIndex == 1) {
			return getDomains().get(rowIndex).getDescripcion();
		} else if(columnIndex == 2) {
			return getDomains().get(rowIndex).getRol().getNombre();
		}
		return null;
	}

	@Override
	protected void modificarEntity(IUsuario oldUsuario, IUsuario newUsuario) {
		oldUsuario.setNombre(newUsuario.getNombre());
		oldUsuario.setClave(newUsuario.getClave());
		oldUsuario.setDescripcion(newUsuario.getDescripcion());
		oldUsuario.setRol(newUsuario.getRol());
	}

	@Override
	public void actualizarTabla() {
		if (getSeleccionado().getIdUsuario() == null) {
			remover();
		}
	}
}
